import Vue from 'vue'
import Vuex from 'vuex'
import { getItem, setItem, removeItem } from '@/utils/storage.js'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 设置tokenInfo
    tokenInfo: getItem('tokenInfo') || {},
    // 保存用户的三个信息：id name photo
    userInfo: getItem('userInfo') || {}
  },
  mutations: {
    // 更新mutation来更新userInfo
    mSetUserInfo (state, userObj) {
      // 1. 保存到vuex
      state.userInfo = userObj
      // 2.做持久化 --- 保存到locastorage
      setItem('userInfo', userObj)
    },
    // 设置mutation来更新userInfo中的头像信息
    mSetUserPhoto (state, photo) {
      // 1. 保存到vuex
      state.userInfo.photo = photo
      // 2. 做持久化 -- 保存到localstorage
      setItem('userInfo', state.userInfo)
    },
    // 设置token
    mSetTokenInfo (state, tokenObj) {
      state.tokenInfo = tokenObj
      // 把token信息持久化到localstorage中
      setItem('tokenInfo', tokenObj)
    },
    // 移除token
    mClearTokenInfo (state) {
      // 1. 保存到vuex
      state.tokenInfo = {}
      // 2. 做持久化 -- 保存到localstorage
      removeItem('tokenInfo')
    }
  },
  getters: {
    // 是否登录了
    isLogin (state) {
      if (state.tokenInfo.token) {
        return true
      } else {
        return false
      }
    }
  }
})
